text = 'yeah, but no, but yeah, but no, but yeah'
print(text.replace('yeah', 'yep'))

text = 'Today is 11/27/2012. PyCon starts 3/13/2013.'
import re
print(re.sub(r'(\d+)/(\d+)/(\d+)', r'\3-\1-\2', text))

datepat = re.compile(r'(\d+)/(\d+)/(\d+)')
print(datepat.sub(r'\3-\1-\2', text))

#对于更加复杂的替换，可以传递一个替换回调函数来代替
#一个替换回调函数的参数是一个match 对象，也就是match() 或者find() 返回的对象。
from calendar import month_abbr
def change_date(m):
    mon_name = month_abbr[int(m.group(1))]
    return '{} {} {}'.format(m.group(2), mon_name, m.group(3))

print(datepat.sub(change_date, text))

#如果除了替换后的结果外，你还想知道有多少替换发生了，可以使用re.subn()来代替。
newtext, n = datepat.subn(r'\3-\1-\2', text)
print(newtext)
print(n)
